<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>GAT | Hexo</title>
  <meta name="keywords" content="">
  <meta name="description" content="GAT | Hexo">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<meta name="description" content="第二章 线性表线性表：表内数据类型相同，有限序列 本章将以总结的形式展现： 2.1 顺序表与链式表的区别     顺序表 链式表     存取 随机存取 顺序存取   结构 顺序存储（连续） 随机存储（不连续）   空间分配 静态存储（可以动态分配） 动态存储   操作 查找 O(1) ,插入和删除O（n） 查找 O(n) ,插入和删除O（1）   缺点 插入删除不便，长度不可以改变 查找速度慢，">
<meta property="og:type" content="article">
<meta property="og:title" content="数据结构">
<meta property="og:url" content="http://yoursite.com/2021/03/12/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/index.html">
<meta property="og:site_name" content="Hexo">
<meta property="og:description" content="第二章 线性表线性表：表内数据类型相同，有限序列 本章将以总结的形式展现： 2.1 顺序表与链式表的区别     顺序表 链式表     存取 随机存取 顺序存取   结构 顺序存储（连续） 随机存储（不连续）   空间分配 静态存储（可以动态分配） 动态存储   操作 查找 O(1) ,插入和删除O（n） 查找 O(n) ,插入和删除O（1）   缺点 插入删除不便，长度不可以改变 查找速度慢，">
<meta property="og:locale" content="en_US">
<meta property="og:image" content="https://gitee.com/moluggg/image/raw/master/img/202102/23/171951-630686.png">
<meta property="og:image" content="https://gitee.com/moluggg/image/raw/master/img/202102/23/171844-136893.png">
<meta property="og:image" content="https://gitee.com/moluggg/image/raw/master/img/202102/19/203103-111988.jpeg">
<meta property="og:image" content="https://gitee.com/moluggg/image/raw/master/img/202102/23/171839-101678.jpeg">
<meta property="og:image" content="https://gitee.com/moluggg/image/raw/master/img/202102/23/200119-510473.png">
<meta property="og:image" content="https://gitee.com/moluggg/image/raw/master/img/202103/05/113954-515448.png">
<meta property="og:image" content="https://gitee.com/moluggg/image/raw/master/img/202102/23/203146-263519.jpeg">
<meta property="og:image" content="https://gitee.com/moluggg/image/raw/master/img/202102/19/153239-688589.png">
<meta property="og:image" content="https://gitee.com/moluggg/image/raw/master/img/202102/19/153248-836462.png">
<meta property="og:image" content="https://gitee.com/moluggg/image/raw/master/img/202102/19/153259-101399.png">
<meta property="og:image" content="https://gitee.com/moluggg/image/raw/master/img/202103/11/113055-306258.jpeg">
<meta property="og:image" content="https://gitee.com/moluggg/image/raw/master/img/202102/19/151817-474283.png">
<meta property="og:image" content="https://gitee.com/moluggg/image/raw/master/img/202102/02/103950-168345.png">
<meta property="og:image" content="https://gitee.com/moluggg/image/raw/master/img/202102/02/105245-140913.png">
<meta property="og:image" content="https://gitee.com/moluggg/image/raw/master/img/202102/19/153313-134836.png">
<meta property="article:published_time" content="2021-03-11T16:00:00.000Z">
<meta property="article:modified_time" content="2021-03-11T07:19:09.038Z">
<meta property="article:author" content="MOLU">
<meta name="twitter:card" content="summary">
<meta name="twitter:image" content="https://gitee.com/moluggg/image/raw/master/img/202102/23/171951-630686.png">


<link rel="icon" href="/img/avatar.jpg">

<link href="/css/style.css?v=1.1.0" rel="stylesheet">

<link href="/css/hl_theme/github.css?v=1.1.0" rel="stylesheet">

<link href="//cdn.jsdelivr.net/npm/animate.css@4.1.0/animate.min.css" rel="stylesheet">

<script src="//cdn.jsdelivr.net/npm/jquery@3.5.1/dist/jquery.min.js"></script>
<script src="/js/titleTip.js?v=1.1.0" ></script>

<script src="//cdn.jsdelivr.net/npm/highlightjs@9.16.2/highlight.pack.min.js"></script>
<script>
    hljs.initHighlightingOnLoad();
</script>

<script src="//cdn.jsdelivr.net/npm/nprogress@0.2.0/nprogress.min.js"></script>



<script src="//cdn.jsdelivr.net/npm/jquery.cookie@1.4.1/jquery.cookie.min.js" ></script>

<script src="/js/iconfont.js?v=1.1.0" ></script>

<meta name="generator" content="Hexo 5.0.0"></head>
<div style="display: none">
  <input class="theme_disqus_on" value="false">
  <input class="theme_preload_comment" value="">
  <input class="theme_blog_path" value="">
  <input id="theme_shortcut" value="true" />
</div>


<body>
<aside class="nav">
    <div class="nav-left">
        <a href="/" class="avatar_target">
    <img class="avatar" src="/img/avatar.jpg" />
</a>
<div class="author">
    <span>MOLU</span>
</div>

<div class="icon">
    
        
        <a title="rss" href="/atom.xml" target="_blank">
            
                <i class="iconfont icon-rss"></i>
            
        </a>
        
    
        
        <a title="github" href="https://github.com/molu-ggg" target="_blank">
            
                <i class="iconfont icon-github"></i>
            
        </a>
        
    
        
    
        
    
        
        <a title="email" href="mailto:2572876783@qq.com" target="_blank">
            
                <i class="iconfont icon-email"></i>
            
        </a>
        
    
</div>




<ul>
    <li><div class="all active" data-rel="All">All<small>(35)</small></div></li>
    
        
            
            <li><div data-rel="AI论文">AI论文<small>(5)</small></div>
                
            </li>
            
        
    
        
            
            <li><div data-rel="专业知识">专业知识<small>(2)</small></div>
                
            </li>
            
        
    
        
            
            <li><div data-rel="数学">数学<small>(2)</small></div>
                
            </li>
            
        
    
        
            
            <li><div data-rel="机器学习">机器学习<small>(12)</small></div>
                
            </li>
            
        
    
        
            
            <li><div data-rel="经典算法">经典算法<small>(10)</small></div>
                
            </li>
            
        
    
</ul>
<div class="left-bottom">
    <div class="menus">
    
    
    
    
    </div>
    <div><a class="about  hasFriend  site_url"  href="/about">About</a><a style="width: 50%"  class="friends">Friends</a></div>
</div>
<input type="hidden" id="yelog_site_posts_number" value="35">

<div style="display: none">
    <span id="busuanzi_value_site_uv"></span>
    <span id="busuanzi_value_site_pv"></span>
</div>

    </div>
    <div class="nav-right">
        <div class="friends-area">
    <div class="friends-title">
        Links
        <i class="iconfont icon-left"></i>
    </div>
    <div class="friends-content">
        <ul>
            
            <li><a target="_blank" href="http://yelog.org/">叶落阁</a></li>
            
        </ul>
    </div>
</div>
        <div class="title-list">
    <div class="right-top">
        <div id="default-panel">
            <i class="iconfont icon-search" data-title="搜索 快捷键 i"></i>
            <div class="right-title">All</div>
            <i class="iconfont icon-file-tree" data-title="切换到大纲视图 快捷键 w"></i>
        </div>
        <div id="search-panel">
            <i class="iconfont icon-left" data-title="返回"></i>
            <input id="local-search-input" />
            <label class="border-line" for="input"></label>
            <i class="iconfont icon-case-sensitive" data-title="大小写敏感"></i>
            <i class="iconfont icon-tag" data-title="标签"></i>
        </div>
        <div id="outline-panel" style="display: none">
            <div class="right-title">大纲</div>
            <i class="iconfont icon-list" data-title="切换到文章列表"></i>
        </div>
    </div>

    <div class="tags-list">
    <input id="tag-search" />
    <div class="tag-wrapper">
        
            <li class="article-tag-list-item">
                <i class="iconfont icon-tag"></i><a>50</a>
            </li>
        
            <li class="article-tag-list-item">
                <i class="iconfont icon-tag"></i><a>AI</a>
            </li>
        
            <li class="article-tag-list-item">
                <i class="iconfont icon-tag"></i><a>数据结构，最短路径，图</a>
            </li>
        
            <li class="article-tag-list-item">
                <i class="iconfont icon-tag"></i><a>机器学习</a>
            </li>
        
            <li class="article-tag-list-item">
                <i class="iconfont icon-tag"></i><a>相似度计算</a>
            </li>
        
    </div>

</div>

    
    <div id="local-search-result">

    </div>
    
    <nav id="title-list-nav">
        
        <a id="top" class="All 经典算法 "
           href="/2020/07/20/b_leetcode/"
           data-tag=""
           data-author="" >
            <span class="post-title" title="leetcode &amp; 蓝桥">leetcode &amp; 蓝桥</span>
            <span class="post-date" title="2020-07-20 00:00:00">2020/07/20</span>
        </a>
        
        <a id="top" class="All AI论文 "
           href="/2020/07/10/d_GAT/"
           data-tag=""
           data-author="" >
            <span class="post-title" title="GAT">GAT</span>
            <span class="post-date" title="2020-07-10 08:50:20">2020/07/10</span>
        </a>
        
        <a  class="All 专业知识 "
           href="/2021/03/12/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BB%84%E6%88%90%E5%8E%9F%E7%90%86/"
           data-tag=""
           data-author="" >
            <span class="post-title" title="计算机组成原理">计算机组成原理</span>
            <span class="post-date" title="2021-03-12 00:00:00">2021/03/12</span>
        </a>
        
        <a  class="All 专业知识 "
           href="/2021/03/12/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/"
           data-tag=""
           data-author="" >
            <span class="post-title" title="数据结构">数据结构</span>
            <span class="post-date" title="2021-03-12 00:00:00">2021/03/12</span>
        </a>
        
        <a  class="All 经典算法 "
           href="/2020/12/05/b_%E5%8A%A8%E6%80%81%E8%A7%84%E5%88%92%E4%B8%8E%E8%AE%B0%E5%BF%86%E5%8C%96%E6%90%9C%E7%B4%A2/"
           data-tag=""
           data-author="" >
            <span class="post-title" title="动态规划记忆化">动态规划记忆化</span>
            <span class="post-date" title="2020-12-05 00:00:00">2020/12/05</span>
        </a>
        
        <a  class="All AI论文 "
           href="/2020/07/25/d_300-paperDAT/"
           data-tag=""
           data-author="" >
            <span class="post-title" title="DAT for recommender">DAT for recommender</span>
            <span class="post-date" title="2020-07-25 08:50:20">2020/07/25</span>
        </a>
        
        <a  class="All 数学 "
           href="/2020/07/20/a_%E7%AE%97%E6%B3%95/"
           data-tag=""
           data-author="" >
            <span class="post-title" title="算法总结">算法总结</span>
            <span class="post-date" title="2020-07-20 00:00:00">2020/07/20</span>
        </a>
        
        <a  class="All 数学 "
           href="/2020/07/20/a_%E6%95%B0%E5%AD%A6/"
           data-tag=""
           data-author="" >
            <span class="post-title" title="数学">数学</span>
            <span class="post-date" title="2020-07-20 00:00:00">2020/07/20</span>
        </a>
        
        <a  class="All "
           href="/2020/07/05/%E5%AF%B9%E9%9A%90%E7%A7%98%E7%9A%84%E8%A7%92%E8%90%BD%E7%94%B5%E8%A7%86%E5%89%A7%E7%9A%84%E6%84%9F%E6%82%9F%E4%BB%A5%E5%8F%8A%E8%AE%A4%E8%AF%86/"
           data-tag=""
           data-author="" >
            <span class="post-title" title="对隐秘的角落电视剧的感悟以及认识">对隐秘的角落电视剧的感悟以及认识</span>
            <span class="post-date" title="2020-07-05 00:00:00">2020/07/05</span>
        </a>
        
        <a  class="All 经典算法 "
           href="/2020/07/04/a_%E6%A8%A1%E6%9D%BF%E5%BA%93/"
           data-tag=""
           data-author="" >
            <span class="post-title" title="模板库">模板库</span>
            <span class="post-date" title="2020-07-04 08:50:20">2020/07/04</span>
        </a>
        
        <a  class="All 机器学习 "
           href="/2020/07/04/a_%E7%99%BE%E5%BA%A6%E6%8A%80%E6%9C%AF%E8%AE%A4%E8%AF%81/"
           data-tag="AI,机器学习"
           data-author="" >
            <span class="post-title" title="百度技术认证">百度技术认证</span>
            <span class="post-date" title="2020-07-04 08:50:20">2020/07/04</span>
        </a>
        
        <a  class="All AI论文 "
           href="/2020/07/01/d_GCN%E8%AE%BA%E6%96%87%E8%A7%A3%E8%AF%BB/"
           data-tag=""
           data-author="" >
            <span class="post-title" title="GCN">GCN</span>
            <span class="post-date" title="2020-07-01 08:50:20">2020/07/01</span>
        </a>
        
        <a  class="All AI论文 "
           href="/2020/06/04/d_word2vec_node2vec/"
           data-tag=""
           data-author="" >
            <span class="post-title" title="Word2vec &amp; Node2vec">Word2vec &amp; Node2vec</span>
            <span class="post-date" title="2020-06-04 08:50:20">2020/06/04</span>
        </a>
        
        <a  class="All AI论文 "
           href="/2020/05/05/d_GAN/"
           data-tag=""
           data-author="" >
            <span class="post-title" title="GAN">GAN</span>
            <span class="post-date" title="2020-05-05 08:50:20">2020/05/05</span>
        </a>
        
        <a  class="All 机器学习 "
           href="/2020/05/04/d_Deepwalk/"
           data-tag="AI,机器学习"
           data-author="" >
            <span class="post-title" title="DEEPWALK">DEEPWALK</span>
            <span class="post-date" title="2020-05-04 08:50:20">2020/05/04</span>
        </a>
        
        <a  class="All 经典算法 "
           href="/2020/02/15/b_%E8%B4%AA%E5%BF%83/"
           data-tag=""
           data-author="" >
            <span class="post-title" title="贪心与动态规划">贪心与动态规划</span>
            <span class="post-date" title="2020-02-15 00:00:00">2020/02/15</span>
        </a>
        
        <a  class="All 机器学习 "
           href="/2020/02/12/a_2020/"
           data-tag=""
           data-author="" >
            <span class="post-title" title="机器学习零散知识记录">机器学习零散知识记录</span>
            <span class="post-date" title="2020-02-12 00:00:00">2020/02/12</span>
        </a>
        
        <a  class="All 经典算法 "
           href="/2020/02/12/b_%E8%83%8C%E5%8C%85%E9%97%AE%E9%A2%98/"
           data-tag=""
           data-author="" >
            <span class="post-title" title="动态规划——背包问题">动态规划——背包问题</span>
            <span class="post-date" title="2020-02-12 00:00:00">2020/02/12</span>
        </a>
        
        <a  class="All 经典算法 "
           href="/2020/02/03/b_%E8%93%9D%E6%A1%A5%E6%9D%AF%E7%BB%83%E4%B9%A0%E9%A2%98/"
           data-tag=""
           data-author="" >
            <span class="post-title" title="蓝桥杯">蓝桥杯</span>
            <span class="post-date" title="2020-02-03 00:00:00">2020/02/03</span>
        </a>
        
        <a  class="All 机器学习 "
           href="/2020/01/20/c_%E5%86%B3%E7%AD%96%E6%A0%91/"
           data-tag="50"
           data-author="" >
            <span class="post-title" title="决策树总结">决策树总结</span>
            <span class="post-date" title="2020-01-20 00:00:00">2020/01/20</span>
        </a>
        
        <a  class="All 经典算法 "
           href="/2020/01/12/b_%E5%85%A8%E6%8E%92%E5%88%97/"
           data-tag=""
           data-author="" >
            <span class="post-title" title="全排列">全排列</span>
            <span class="post-date" title="2020-01-12 00:00:00">2020/01/12</span>
        </a>
        
        <a  class="All 经典算法 "
           href="/2019/12/02/b_%E6%9C%89%E7%A9%B7%E8%87%AA%E5%8A%A8%E6%9C%BA/"
           data-tag=""
           data-author="" >
            <span class="post-title" title="有穷自动机">有穷自动机</span>
            <span class="post-date" title="2019-12-02 00:00:00">2019/12/02</span>
        </a>
        
        <a  class="All 经典算法 "
           href="/2019/11/20/b_%E9%94%99%E6%8E%92%E5%85%AC%E5%BC%8F/"
           data-tag=""
           data-author="" >
            <span class="post-title" title="错排公式">错排公式</span>
            <span class="post-date" title="2019-11-20 00:00:00">2019/11/20</span>
        </a>
        
        <a  class="All "
           href="/2019/10/29/a_%E5%BC%97%E6%B4%9B%E4%BC%8A%E5%BE%B7/"
           data-tag="数据结构，最短路径，图"
           data-author="" >
            <span class="post-title" title="最短路径之弗洛伊德算法">最短路径之弗洛伊德算法</span>
            <span class="post-date" title="2019-10-29 00:00:00">2019/10/29</span>
        </a>
        
        <a  class="All 机器学习 "
           href="/2019/08/04/c_BPR/"
           data-tag="AI,机器学习"
           data-author="" >
            <span class="post-title" title="贝叶斯">贝叶斯</span>
            <span class="post-date" title="2019-08-04 08:50:20">2019/08/04</span>
        </a>
        
        <a  class="All 机器学习 "
           href="/2019/08/02/c_matrix/"
           data-tag="AI,机器学习"
           data-author="" >
            <span class="post-title" title="矩阵分解与正则化">矩阵分解与正则化</span>
            <span class="post-date" title="2019-08-02 08:25:59">2019/08/02</span>
        </a>
        
        <a  class="All "
           href="/2019/07/28/c_coordination1/"
           data-tag="AI,机器学习,相似度计算"
           data-author="" >
            <span class="post-title" title="协同过滤-上">协同过滤-上</span>
            <span class="post-date" title="2019-07-28 08:25:59">2019/07/28</span>
        </a>
        
        <a  class="All 机器学习 "
           href="/2019/07/26/c_cnn/"
           data-tag="AI,机器学习"
           data-author="" >
            <span class="post-title" title="cnn">cnn</span>
            <span class="post-date" title="2019-07-26 18:54:51">2019/07/26</span>
        </a>
        
        <a  class="All 机器学习 "
           href="/2019/07/22/c_coordination2/"
           data-tag="AI,机器学习"
           data-author="" >
            <span class="post-title" title="协同过滤—下">协同过滤—下</span>
            <span class="post-date" title="2019-07-22 18:54:26">2019/07/22</span>
        </a>
        
        <a  class="All 机器学习 "
           href="/2019/07/22/c_kmeans/"
           data-tag="AI,机器学习"
           data-author="" >
            <span class="post-title" title="K-means算法">K-means算法</span>
            <span class="post-date" title="2019-07-22 18:53:07">2019/07/22</span>
        </a>
        
        <a  class="All 机器学习 "
           href="/2019/07/21/c_nerve2/"
           data-tag="AI,机器学习"
           data-author="" >
            <span class="post-title" title="神经网络-下">神经网络-下</span>
            <span class="post-date" title="2019-07-21 11:37:18">2019/07/21</span>
        </a>
        
        <a  class="All "
           href="/2019/07/20/c_nerve1/"
           data-tag="AI,机器学习"
           data-author="" >
            <span class="post-title" title="神经网络—上">神经网络—上</span>
            <span class="post-date" title="2019-07-20 17:29:10">2019/07/20</span>
        </a>
        
        <a  class="All 机器学习 "
           href="/2019/06/22/c_gradient/"
           data-tag="AI,机器学习"
           data-author="" >
            <span class="post-title" title="线性回归与梯度下降算法">线性回归与梯度下降算法</span>
            <span class="post-date" title="2019-06-22 08:26:36">2019/06/22</span>
        </a>
        
        <a  class="All 机器学习 "
           href="/2019/06/19/c_flyback/"
           data-tag="AI,机器学习"
           data-author="" >
            <span class="post-title" title="线性回归">线性回归</span>
            <span class="post-date" title="2019-06-19 00:00:00">2019/06/19</span>
        </a>
        
        <a  class="All 经典算法 "
           href="/2019/05/20/b_%E8%A7%86%E9%A2%91%E7%BB%8F%E5%85%B8%E7%AE%97%E6%B3%95/"
           data-tag=""
           data-author="" >
            <span class="post-title" title="简单入门算法">简单入门算法</span>
            <span class="post-date" title="2019-05-20 00:00:00">2019/05/20</span>
        </a>
        
        <div id="no-item-tips">

        </div>
    </nav>
    <div id="outline-list">
    </div>
</div>
    </div>
    <div class="hide-list">
        <div class="semicircle" data-title="切换全屏 快捷键 s">
            <div class="brackets first"><</div>
            <div class="brackets">&gt;</div>
        </div>
    </div>
</aside>
<div id="post">
    <div class="pjax">
        <article id="post-d_GAT" class="article article-type-post" itemscope itemprop="blogPost">
    
        <h1 class="article-title">GAT</h1>
    
    <div class="article-meta">
        
        <span class="top"><a>置顶</a></span>
        
        
        
        <span class="book">
            <i class="iconfont icon-category"></i>
            
            
            <a  data-rel="AI论文">AI论文</a>
            
        </span>
        
        
    </div>
    <div class="article-meta">
        
            Created At : <time class="date" title='Updated At: 2020-09-03 15:56:02'>2020-07-10 08:50</time>
        
    </div>
    <div class="article-meta">
        
        
        <span id="busuanzi_container_page_pv">
            Views 👀 :<span id="busuanzi_value_page_pv">
                <span class="count-comment">
                    <span class="spinner">
                      <div class="cube1"></div>
                      <div class="cube2"></div>
                    </span>
                </span>
            </span>
        </span>
        
        
    </div>
    
    <div class="toc-ref">
    
        <ol class="toc"><li class="toc-item toc-level-1"><a class="toc-link" href="#Graph-Adversarial-Training-Dynamically-Regularizing-Based-on-Graph-Structure"><span class="toc-text">Graph Adversarial Training: Dynamically Regularizing Based on Graph Structure</span></a><ol class="toc-child"><li class="toc-item toc-level-2"><a class="toc-link" href="#1-%E6%91%98%E8%A6%81"><span class="toc-text">1.摘要:</span></a><ol class="toc-child"><li class="toc-item toc-level-3"><a class="toc-link" href="#%E5%AF%B9%E6%8A%97%E6%80%A7%E8%AE%AD%E7%BB%83%E7%9A%84%E5%BC%95%E5%85%A5%E4%BB%A5%E5%8F%8A%E7%8E%B0%E9%98%B6%E6%AE%B5%E5%AD%98%E5%9C%A8%E7%9A%84%E7%BC%BA%E7%82%B9%EF%BC%9A"><span class="toc-text">对抗性训练的引入以及现阶段存在的缺点：</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#%E6%9C%AC%E6%96%87%E7%9A%84%E4%B8%BB%E8%A6%81%E8%B4%A1%E7%8C%AE%E6%80%BB%E7%BB%93%E4%B8%BA%EF%BC%9A"><span class="toc-text">本文的主要贡献总结为：</span></a></li></ol></li><li class="toc-item toc-level-2"><a class="toc-link" href="#2-%E7%9B%B8%E5%85%B3%E5%B7%A5%E4%BD%9C"><span class="toc-text">2. 相关工作</span></a><ol class="toc-child"><li class="toc-item toc-level-3"><a class="toc-link" href="#2-2-Adversarial-Training-%E5%AF%B9%E6%8A%97%E6%80%A7%E8%AE%AD%E7%BB%83"><span class="toc-text">2.2 Adversarial Training 对抗性训练</span></a><ol class="toc-child"><li class="toc-item toc-level-4"><a class="toc-link" href="#2-2-1-Adversarial-Training-%E5%AF%B9%E6%8A%97%E6%80%A7%E8%AE%AD%E7%BB%83"><span class="toc-text">2.2.1 Adversarial Training 对抗性训练</span></a></li><li class="toc-item toc-level-4"><a class="toc-link" href="#2-2-2-GAN"><span class="toc-text">2.2.2 GAN</span></a></li></ol></li></ol></li><li class="toc-item toc-level-2"><a class="toc-link" href="#3-PRELIMINARIES"><span class="toc-text">3  PRELIMINARIES</span></a><ol class="toc-child"><li class="toc-item toc-level-3"><a class="toc-link" href="#3-1-Graph-Representation-%E5%9B%BE%E7%9A%84%E8%A1%A8%E7%A4%BA"><span class="toc-text">3.1 Graph Representation**图的表示</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#3-2-Node-Classifification"><span class="toc-text">3.2  Node Classifification</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#3-3-%E5%9F%BA%E4%BA%8E%E5%9B%BE%E7%9A%84%E5%AD%A6%E4%B9%A0"><span class="toc-text">3.3 基于图的学习</span></a></li></ol></li><li class="toc-item toc-level-2"><a class="toc-link" href="#4-%E6%96%B9%E6%B3%95%EF%BC%9A"><span class="toc-text">4.方法：</span></a><ol class="toc-child"><li class="toc-item toc-level-3"><a class="toc-link" href="#4-1-GAT-%EF%BC%88Graph-Adversarial-Training%EF%BC%89"><span class="toc-text">4.1 GAT （Graph Adversarial Training）</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#4-2-Virtual-Graph-Adversarial-Training"><span class="toc-text">4.2 Virtual Graph Adversarial Training</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#4-3-GCN"><span class="toc-text">4.3  GCN</span></a></li></ol></li><li class="toc-item toc-level-2"><a class="toc-link" href="#%E6%80%BB%E7%BB%93%EF%BC%9A"><span class="toc-text">总结：</span></a></li></ol></li><li class="toc-item toc-level-1"><a class="toc-link" href="#Softmax"><span class="toc-text">Softmax</span></a></li><li class="toc-item toc-level-1"><a class="toc-link" href="#FGSM"><span class="toc-text">FGSM</span></a></li><li class="toc-item toc-level-1"><a class="toc-link" href="#kl-%E6%95%A3%E5%BA%A6%E2%80%94-%E7%9B%B8%E5%AF%B9%E7%86%B5"><span class="toc-text">kl 散度—-相对熵</span></a></li><li class="toc-item toc-level-1"><a class="toc-link" href="#NGCF"><span class="toc-text">NGCF</span></a><ol class="toc-child"><li class="toc-item toc-level-2"><a class="toc-link" href="#1-%E8%83%8C%E6%99%AF"><span class="toc-text">1.背景</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#2-METHODOLOGY"><span class="toc-text">2 METHODOLOGY</span></a><ol class="toc-child"><li class="toc-item toc-level-3"><a class="toc-link" href="#2-1-Embedding-Layer"><span class="toc-text">2.1 Embedding Layer</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#2-2-Embedding-Propagation-Layers"><span class="toc-text">2.2 Embedding Propagation Layers</span></a><ol class="toc-child"><li class="toc-item toc-level-4"><a class="toc-link" href="#2-2-1-First-order-Propagation"><span class="toc-text">2.2.1  First-order Propagation</span></a></li><li class="toc-item toc-level-4"><a class="toc-link" href="#2-2-2-High-order-Propagation"><span class="toc-text">2.2.2  High-order Propagation</span></a></li></ol></li><li class="toc-item toc-level-3"><a class="toc-link" href="#2-3-Model-Prediction"><span class="toc-text">2.3  Model Prediction</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#2-4-Optimization"><span class="toc-text">2.4 Optimization</span></a></li></ol></li></ol></li></ol>
    
<style>
    .left-col .switch-btn,
    .left-col .switch-area {
        display: none;
    }
    .toc-level-4 i,
    .toc-level-4 ol {
        display: none !important;
    }
</style>
</div>
    
    <div class="article-entry" itemprop="articleBody">
      
        <h1 id="Graph-Adversarial-Training-Dynamically-Regularizing-Based-on-Graph-Structure"><a href="#Graph-Adversarial-Training-Dynamically-Regularizing-Based-on-Graph-Structure" class="headerlink" title="Graph Adversarial Training: Dynamically Regularizing Based on Graph Structure"></a>Graph Adversarial Training: Dynamically Regularizing Based on Graph Structure</h1><p>论文翻译:</p>
<h2 id="1-摘要"><a href="#1-摘要" class="headerlink" title="1.摘要:"></a>1.摘要:</h2><p>(话题方向切人,他人最近的有关成果，再次基础上他人成果的不足。提出我们的做法，结果以及引出我们的</p>
<h3 id="对抗性训练的引入以及现阶段存在的缺点："><a href="#对抗性训练的引入以及现阶段存在的缺点：" class="headerlink" title="对抗性训练的引入以及现阶段存在的缺点："></a>对抗性训练的引入以及现阶段存在的缺点：</h3><pre><code> 对抗性训练是通过在模型训练过程中在输入空间中进行随机扰动(perturbations)来提高深度学习模型泛化能力的有效方法。 最近的一次 奥迪已经成功地将对抗性训练应用于推荐系统，通过极小极大的游戏干扰用户和项目的嵌入。 然而，这种方法忽略了协同信号 在推荐系统中，未能捕获数据分布中的平滑性。 我们认为，揭示用户和项目之间行为相似性的协作信号是至关重要的建模推荐系统。 在本工作中，我们通过显式地将协作信号注入扰动过程来开发定向对抗性训练(DAT)策略。 即b 用户和项目对嵌入空间中的相似邻居感到不安(perturbed)，并受到适当的限制。 为了验证其有效性，我们演示了DAT在广义矩阵事实上的使用 定向(GMF)是最具代表性的协同过滤方法之一。 我们在三个公共数据集上的实验结果表明，我们的方法(称为DAGMF)达到了显著的精度I对GMF的改进，同时，它比GMF更不容易过度拟合。
</code></pre><p> 对抗性训练是[12]提出的一种新的方法，以解决深度学习模型很容易被对抗性例子[26]愚弄的问题，这些例子是通过施加小的代价来构造的 输入示例上的涡轮。 最近，一些研究[12,22,23]指出，<strong>对抗性训练可以作为一种正则化方法来提高泛化性能 以及防止深度学习模型过度拟合</strong>。</p>
<blockquote>
<p> <strong>:a: 主要内容：</strong></p>
<p> 对抗性训练忽略了协同信号未能捕获数据分布中的平滑性，但是作者认为用户和项目之间的行为相似性的写作信号很重要，于是，将写作信号注入到扰动过程并开发定向的对抗训练，斌能够取得了不错的效果。同时学者发现，对抗性训练可以作为正则化提高泛化性能。</p>
</blockquote>
<p>​     尽管性能很好，但我们认为图形神经网络容易受到输入特征[13]、[14]的小而有意的扰动，这甚至可能比不建模图形结构的标准神经网络更为严重。 原因有两个：1)图神经网络也优化了标记数据上的监督损失，因此它将面临相同的损失 作为标准神经网络[15]的生物问题 2)附加的平滑约<strong>束将加剧扰动的影响</strong>，因为跨越连接节点的平滑将聚合来自连接到ta的节点的扰动的影响rget节点（即我们应用扰动以改变其预测的节点）。 图1用图w的直观例子说明了扰动对节点特征的影响有4个节点。 图神经网络模型分别预测具有应用扰动的清洁输入特征和特征的节点标签(总共3个。 在这里，扰动是故意施加的节点1、2、4的特征。 因此，图神经网络模型被愚弄，对节点1和2作出错误的预测，就像标准神经网络一样。 此外，通过传播节点 嵌入，该模型将扰动的影响聚集到节点3，其预测也受到影响。 在实际应用中，小扰动就像节点特性的更新 可能经常发生，但不应太多地改变预测。 因此，我们认为在训练过程中<strong>迫切需要稳定图形神经网络模型。</strong></p>
<p>对抗性训练(AT)是一种动态正则化技术，它主动模拟训练阶段[15]的扰动。 经验表明它能够稳定神经 在标准分类任务[16]-[21]中增强它们对扰动的鲁棒性。 因此，在图神经网络模型上采用与AT相似的方法也有助于模型的鲁棒性。 然而，直接在图神经网络上使用AT是不够的，因为它将示例视为相互独立的，不考虑来自相关示例的影响。 因此，我们提出了一种新的对抗性训练方法，称为<strong>图形对抗性训练(</strong>Gra 它学习通过考虑图形结构来构造和抵抗扰动。</p>
<blockquote>
<p>:a:这两段的主要内容：</p>
<p>图神经网络也能收到小的扰动的影响，因此也需要在训练过程中迫切需要稳定图形神经网络模型。</p>
</blockquote>
<p>方法是借用对抗性训练的方法，但是又是远远不够的。</p>
<p><img src="https://gitee.com/moluggg/image/raw/master/img/202008/10/154541-373910.png" alt="image-20200720110723267"></p>
<p> 图 1：一个直观的例子来说明将扰动应用于输入节点特征对图神经网络预测的影响。 在这里，模型实现了图平滑度c通过在图上传播节点嵌入进行约束。 在右边，模型在目标节点3的连接节点上传播应用的扰动，导致错误的预测。 而且，在节点1和2上的扰动直接导致错误的相关预测，如在标准神经网络中。</p>
<p> GraphAT的关键思想是，当在目标示例 target example上产生扰动时，<strong>它使目标示例的预测与其连接示例（connected examples）之间的分歧最大化</strong>。 也就是说，a对抗性扰动应该<strong>尽可能地攻击图形平滑约束</strong>。 然后，GraphAT通过额外最小化图对抗性正则化(<em>graph adversarial regularizer</em>)来更新模型参数，减少 扰动目标实例与其连通实例之间的预测发散。 通过这种方法，GraphAT可以抵抗基于图形学习的最坏情况扰动，并增强模型半身像。 为了有效地计算对抗性扰动，我们进一步设计了一种基于<strong>反向传播的线性逼近方法</strong>。 </p>
<p>为了演示GraphAT， 我们将其应用于一个建立良好的图形神经网络模型-图形卷积网络(GCN)[7]，该模型通过执行<strong>嵌入传播</strong>(performing embedding propagation)来实现平滑约束。 我们研究美索 节点分类的性能，这是基于图的学习中最受欢迎的任务之一。 我们研究了该方法在节点分类上的性能，这是基于图的学习中最流行的任务之一。 在三个公共基准（两个引文图和一个知识）上进行广泛的实验图)验证了Graph AT的优势-与GCN的正常训练相比，GraphAT的精度提高了4.51。 此外，对不太受欢迎的节点（有很小的程度）的改进是MOR 重要的，强调了用所考虑的图结构执行AT的必要性。</p>
<p>:100: target and connected example是什么意思：</p>
<p>目标节点，以及与目标节点相连接的结点吗？</p>
<h3 id="本文的主要贡献总结为："><a href="#本文的主要贡献总结为：" class="headerlink" title="本文的主要贡献总结为："></a>本文的主要贡献总结为：</h3><p>我们提出了<strong>图形对抗性训练</strong>，这是一种新的图形神经网络优化方法，可以提高模型的鲁棒性节点输入特性的扰动。 </p>
<p>我们设计了一个<strong>图对抗性正则化器</strong>，动态地鼓励模型对扰动目标示例及其连接生成类似的预测举例说明，并开发了一种有效的算法来构造扰动。 </p>
<p>我们证明了Graph ATON的有效性 在三个数据集上进行了GCN实验，表明我们的方法在节点分类方面达到了最先进的性能.</p>
<p> 在本文的其余部分中，我们首先在第二节中讨论相关工作，然后在第三节中讨论问题的制定和准备。 在第4节和第5节中，我们详细阐述了方法和经验 结果，分别。 我们在第六节中总结了这篇论文，并展望了未来的方向。</p>
<h2 id="2-相关工作"><a href="#2-相关工作" class="headerlink" title="2. 相关工作"></a>2. 相关工作</h2><p> 在这一部分中，我们讨论了现有的基于图的学习和对抗性学习的研究，这些研究与这项工作密切相关。</p>
<p> 图是关系数据的一种自然表示，其中节点和边缘表示实体及其关系，广泛应用于社交网络、交易记录、生物分析中交互、相互关联文档的集合、网页和多媒体内容等。在这样的图表上，最受欢迎的任务之一是节点分类，以预测标签图中的节点通过考虑节点特征和图结构。 现有的节点分类工作主要分为两大类： 图拉普拉斯正则化和基于图嵌入的方法(<em>graph Laplacian regularization</em> and<em>graph embedding-based methods</em>)。前一类的方法显式地将图结构编码为正则化项，以平滑图上的预测，i.s.，当用不同的标签预测相似的节点（例如紧密连接）时，正则化会受到很大的惩罚</p>
<p> 最近，基于图嵌入的方法，学习编码图数据的节点嵌入，已经成为很有前途的解决方案。 大多数基于嵌入的方法分为两大类：: <em>skip-gram based methods</em> and <em>convolution based methods</em>，取决于图形数据是如何建模的。 skip-gram通过使用节点的嵌入来预测节点conte来学习节点嵌入 通过在图上执行随机游走生成的结点的上下文，以便嵌入“连接”节点 相互关联的[2]、[5]、[6]、[12]。 受计算机视觉中卷积思想的启发，卷积在局部窗口中聚集上下文信号，基于卷积的方法迭代 聚合邻居节点的表示，以学习节点嵌入[3]、[4]、[7]、[11]、[25]-[30]。 </p>
<p>在这两个类别中，利用深度Neural的高级表示能力的方法 网络（基于神经图的学习方法）在解决节点分类任务方面表现出显著的有效性。 然而，<strong>基于神经图的学习模型容易受到意图的影响 设计的扰动表明了泛化[13]、[31]和很少注意的不稳定性，以增强这些方法的鲁棒性，这是本工作的重点。</strong></p>
<h3 id="2-2-Adversarial-Training-对抗性训练"><a href="#2-2-Adversarial-Training-对抗性训练" class="headerlink" title="2.2 Adversarial Training 对抗性训练"></a>2.2 Adversarial Training 对抗性训练</h3><h4 id="2-2-1-Adversarial-Training-对抗性训练"><a href="#2-2-1-Adversarial-Training-对抗性训练" class="headerlink" title="2.2.1 Adversarial Training 对抗性训练"></a>2.2.1 Adversarial Training 对抗性训练</h4><p> 为了解决深层神经网络对有意扰动的脆弱性，<strong>研究人员提出了对抗性训练，这是一种替代的极小极大过程[32]。</strong> ==对抗训练 方法通过从具有扰动的干净例子中动态生成对抗性例子来增强训练过程，最大限度地攻击训练目标，然后学习这些通过最小化一个额外的正则化项[15]、[17]、[33]-[38]来证明这些例子。== 对抗性训练方法主要分为监督和半监督两种 培训目标。 在有监督的学习任务中，如视觉识别[15]、监督损失[15]、[33]、[34]及其代理[36]-以对抗性例子为目标最大化和最小化。 对于半监督学习，其中部分示例被标记，对每个示例周围的输入的预测作为目标。 一般来说对抗性训练方法的哲学是以动态的方式平滑围绕单个输入的预测。 我们的工作受到了这些对抗性训练方法的启发。 此外 对于单个示例的局部平滑性，我们的方法进一步考虑了极小极大过程目标中的示例（即图结构）之间的关系，以便学习鲁棒分类器在图形结构上平滑地预测。 据我们所知，这是第一次尝试将图形结构纳入对抗性训练。 另一个新兴的研究课题rela 泰德对我们的工作是产生对抗性扰动攻击基于神经图的学习模型，其中[31]和[13]是唯一发表的工作。 然而，[31]和[13]中的方法是不合适的用于构建图对抗性训练中的对抗性示例。 这是因为这些方法生成一个新的图作为每个节点的对抗性示例，即它们将生成 当节点数为N时，N图导致无法负担的内存开销。 <strong>在本工作中，我们设计了一种有效的方法来生成用于图形对抗性训练的对抗性示例。</strong></p>
<h4 id="2-2-2-GAN"><a href="#2-2-2-GAN" class="headerlink" title="2.2.2 GAN"></a>2.2.2 GAN</h4><p>有关对抗神经网络的：</p>
<p><a target="_blank" rel="noopener" href="https://moluggg.gitee.io/2020/05/05/d_GAN/">https://moluggg.gitee.io/2020/05/05/d_GAN/</a></p>
<h2 id="3-PRELIMINARIES"><a href="#3-PRELIMINARIES" class="headerlink" title="3  PRELIMINARIES"></a>3  PRELIMINARIES</h2><p>以下是另一篇论文：</p>
<p><a target="_blank" rel="noopener" href="https://moluggg.gitee.io/2020/07/01/d_GCN论文解读/">https://moluggg.gitee.io/2020/07/01/d_GCN%E8%AE%BA%E6%96%87%E8%A7%A3%E8%AF%BB/</a></p>
<h3 id="3-1-Graph-Representation-图的表示"><a href="#3-1-Graph-Representation-图的表示" class="headerlink" title="3.1 Graph Representation**图的表示"></a>3.1 Graph Representation**图的表示</h3><p>$G = (A, D, X).$</p>
<p>A 表示邻接矩阵矩阵。</p>
<p>D 表示对角矩阵</p>
<p>X表示输入矩阵，</p>
<h3 id="3-2-Node-Classifification"><a href="#3-2-Node-Classifification" class="headerlink" title="3.2  Node Classifification"></a>3.2  <strong>Node Classifification</strong></h3><p> 学习预测函数（分类器）$y_{i}=f(xi，G|Θ)$，预测节点的标签，其中Θ包括要学习的模型参数。</p>
<p>其中$y_i$表示结点的标签</p>
<h3 id="3-3-基于图的学习"><a href="#3-3-基于图的学习" class="headerlink" title="3.3 基于图的学习"></a>3.3 基于图的学习</h3><p>:100: 这一部分就是讲的GCN是吧？</p>
<script type="math/tex; mode=display">
\Gamma=\Omega+\lambda \Phi</script><p> <strong>Φ鼓励在图结构上预测的平滑性，这是基于这样的假设，即紧密连接的节点往往相似的预测</strong></p>
<p><strong>该公式具体表示为：(引用了原始GCN文章中的代价函数)</strong></p>
<p>$\Phi$ 表示的是拉普拉斯矩阵正则化，主要作用是降维以及提取特征</p>
<p><img src="https://gitee.com/moluggg/image/raw/master/img/202008/10/192402-788313.png" alt="img"><a target="_blank" rel="noopener" href="https://zhuanlan.zhihu.com/p/100002630">https://zhuanlan.zhihu.com/p/100002630</a></p>
<script type="math/tex; mode=display">
\mathcal{L}=\mathcal{L}_{0}+\lambda \mathcal{L}_{\mathrm{reg}}, \quad \text { with } \quad \mathcal{L}_{\mathrm{reg}}=\sum_{i, j} A_{i j}\left\|f\left(X_{i}\right)-f\left(X_{j}\right)\right\|^{2}=f(X)^{\top} \Delta f(X)</script><h2 id="4-方法："><a href="#4-方法：" class="headerlink" title="4.方法："></a>4.方法：</h2><p> 在这一部分中，我们首先介绍了图对抗性训练的公式，然后介绍了 <em>Graph-VAT</em>，这是GraphAT的扩展，它进一步结合了虚拟对立我的正则化[35]。 然后，我们提出了两种节点分类任务的解决方案，即GraphAT和Graph-VAT，它们分别使用GraphAT和Graph-VAT来训练GCN[7]。 最后，我们分析 这两种解决方案的时间复杂性，并给出了重要的实现细节。</p>
<h3 id="4-1-GAT-（Graph-Adversarial-Training）"><a href="#4-1-GAT-（Graph-Adversarial-Training）" class="headerlink" title="4.1 GAT （Graph Adversarial Training）"></a>4.1 GAT （<strong>Graph Adversarial Training</strong>）</h3><p> 对抗性训练的最新进展已经成功地学习了基于深度神经网络的分类器，使它们对广泛的标准分类tas的扰动具有鲁棒性 视觉识别[15]、[16]、[35]和文本分类[17]等。 一般情况下，应用AT可以调节模型参数来平滑输出分布[35]。 具体来说，每个clean example在数据集中的精益示例中，AT鼓励模型将类似的输出分配给从干净示例的人工输入(即对抗性示例。 受sta哲学的启发 在NDARDAT中，我们开发了图形对抗性训练，它以生成对抗性示例和优化ADVE上的附加正则化项的方式训练图形神经网络模块疟疾例子，以防止扰动的不利影响。 <strong>这里的重点是防止通过节点连接传播的扰动（如图1所示），或者对抗性训练中的图形结构。</strong></p>
<p><img src="https://gitee.com/moluggg/image/raw/master/img/202008/09/212823-429859.png" alt="image-20200721095707729"></p>
<p>Fig 2：GraphAT的训练过程：1)构造图对抗性实例；2)通过最小化损耗值和图对抗性正则化来更新模型参数。</p>
<p>:100: 这个图是怎么体现这个过程的？</p>
<p>GraphAT 的公式：</p>
<script type="math/tex; mode=display">
\begin{array}{l}
\left.\min : \Gamma_{G A T}=\Gamma+\beta \sum_{i=1} \sum_{j \in \mathcal{N}_{i}} d\left(f\left(\boldsymbol{x}_{i}+\boldsymbol{r}_{i}^{g}, G \mid \boldsymbol{\Theta}\right), f\left(\boldsymbol{x}_{j}, G \mid \Theta\right)\right)\right) \\
\max : \boldsymbol{r}_{i}^{g}=\arg \max _{\boldsymbol{r}_{i},\left\|\boldsymbol{r}_{i}\right\| \leq \epsilon} \sum_{j \in \mathcal{N}_{i}} d\left(f\left(\boldsymbol{x}_{i}+\boldsymbol{r}_{i}, G \mid \hat{\Theta}\right), f\left(\boldsymbol{x}_{j}, G \mid \hat{\Theta}\right)\right)
\end{array}</script><p>$\Gamma_{G A T}$训练目标函数有两个术语：基于原点的图形学习模型的标准目标函数（例如，方程(1)）和图形对抗性正则化。</p>
<p>注：</p>
<p>① $\Gamma$  就是前面基于图3.3 的公式</p>
<p>② Ω是一种分类损失（例如对数损失、铰链损失和交叉熵损失），它测量prediction and ground-truth of labeled nodes. </p>
<p>③   第二项max公式鼓励<strong>将图对抗性示例类似地归类为连接示例</strong>，其中Θ表示要学习的参数，</p>
<p>④ d() 是<strong>度量的非负函数 两个预测之间的差异</strong>(例如Kullback-Leibler散度[45]。</p>
<p> d()简单的说就是 <strong>kl散度</strong></p>
<p>⑤ $ \boldsymbol{r}_{i}^{g}$表示图对抗性扰动，它被用于clean exapmle i，来构造输入特征 一个图形对抗性的例子。</p>
<p>⑥  MAX公式： Graph AT从clean 的示例中生成图形对抗性扰动，<strong>最大限度地破坏了连接节点之间的平滑性。</strong> 然后通过将扰动添加到相关的干净示例的输入中来构造图形对抗性示例。</p>
<p>:100: 破坏链接节点之间的平滑性的原因是？</p>
<p>⑦ Minimization: Graph AT通过鼓励对抗性预测之间的平滑性，在图对抗性示例上增加一个正则化器，使图神经网络的目标函数最小化 示例和连接示例。 因此，该模型对通过图传播的扰动变得鲁棒。</p>
<blockquote>
<p> 理解：</p>
<p><strong>在模型参数的当前值下，通过最大化图对抗性正则化来计算图对抗性扰动</strong>。 也就是说，<strong>图的对抗性扰动是输入特征上的变化方向，它可以最大限度地攻击图形对抗性正则化</strong>，即从邻居节点传播的扰动的最坏情况。 是一个超参数控制 令扰动的大小，这通常被设置为小值，以便对抗性示例的特征分布接近干净示例。</p>
<p> 图2说明了 GraphAT 的过程。 而传统的基于图的正则化(例如，图Laplacian术语)也鼓励了图结构上预测的平滑性，Graph AT被认为是一个更先进的规则，原因有两个：1)Graph AT执行的正则化是动态的 由于对抗性示例是根据模型的当前参数和预测自适应生成的，而基于标准图形的正则化是静态的；2)图A Tto 在一定程度上增加了训练数据，因为在训练数据中没有出现生成的对抗性例子，这有利于模型的泛化。</p>
</blockquote>
<p>上面形式的$ \boldsymbol{r}_{i}^{g}$ 不好求，作何收到标准对抗性训练的线性逼近方法启发下<strong>（快速梯度法）</strong>，设计了一个线性应用程序 计算Graph-AT中图对抗性扰动的近似方法，其公式为：</p>
<script type="math/tex; mode=display">
\boldsymbol{r}_{i}^{g} \approx \epsilon \frac{\boldsymbol{g}}{\|\boldsymbol{g}\|}, \text { where } \boldsymbol{g}=\nabla_{\boldsymbol{x}_{i}} \sum_{j \in \mathcal{N}_{i}} D\left(f\left(\boldsymbol{x}_{i}, G \mid \hat{\boldsymbol{\Theta}}\right), f\left(\boldsymbol{x}_{j}, G \mid \hat{\boldsymbol{\Theta}}\right)\right)</script><p>需要搞清楚：</p>
<p>$ \boldsymbol{r}_{i}^{g}$:是一个扰动</p>
<p>快速梯度法见下面的FGSM</p>
<blockquote>
<p>这个公式的来源：</p>
<p>FGSM和FGM方法是Goodfellow等人分别在[1]和[2]中提出的。思想很简单，就是让扰动$\delta$的方向是沿着梯度提升的方向的，沿着梯度提升也就意味着让损失增大的最大。FGSM（Fast Gradient Sign Method）和FGM（Fast Gradient Method）的区别在于采用的归一化的方法不同，FGSM是通过Sign函数对梯度采取max归一化，FGM则采用的是  L2归一化。max归一化是是说如果梯度某个维度上的值为正，则设为1；如果为负，则设为-1；如果为0，则设为0。$L_2$归一化则将梯度的每个维度的值除以梯度的$L_2$范数。 理论上$L_2$归一化更严格的保留了梯度的方向，但是max归一化则不一定和原始梯度的方向相同。</p>
<p>FGSM：$\delta=\epsilon \cdot \operatorname{sign}(g)$</p>
<p>FGM: $\delta=\epsilon \cdot\left(g /|g|_{2}\right)$</p>
<p>其中， $g=\nabla_{X}\left(L\left(f_{\theta}(X), y\right)\right)$ ，也就是损失函数L关于输入X的梯度，这个梯度在我们做神经网络优化的时候是很容易求出来的。</p>
<p>当然两种方法都有个假设，就是损失函数是线性的或者至少是局部线性的。如果不是（局部）线性的，那梯度提升的方向就不一定是最优方向了。</p>
<p><a target="_blank" rel="noopener" href="https://zhuanlan.zhihu.com/p/104040055">https://zhuanlan.zhihu.com/p/104040055</a></p>
</blockquote>
<h3 id="4-2-Virtual-Graph-Adversarial-Training"><a href="#4-2-Virtual-Graph-Adversarial-Training" class="headerlink" title="4.2 Virtual Graph Adversarial Training"></a>4.2 Virtual Graph Adversarial Training</h3><p>暂且不看</p>
<p> 考虑到节点分类本质上是半监督学习的一项任务，我们进一步设计了一个扩展版本的GraphAT，名为GraphVAT，它进一步平滑了Pr的分布 围绕每个干净的例子，进一步增强模型的鲁棒性。 受虚拟对抗训练[35]思想的启发，我们进一步在traini中添加了一个虚拟对抗正则化器 吴目标函数并构造虚拟对抗性例子来攻击预测的局部平滑性。 与标准AT相比，它只考虑标记的干净示例，虚拟对抗性 培训还鼓励模型围绕未标记的清洁示例进行一致的预测。 Graph-VAT的公式为：</p>
<p><img src="https://gitee.com/moluggg/image/raw/master/img/202008/09/212856-565025.png" alt="image-20200809212855968"></p>
<h3 id="4-3-GCN"><a href="#4-3-GCN" class="headerlink" title="4.3  GCN"></a>4.3  GCN</h3><p>$f(xi , G|Θ) $ 怎么求呢？</p>
<script type="math/tex; mode=display">
\sum_{i=1}^{M} \operatorname{cross-entropy}\left(f\left(\boldsymbol{x}_{i}, G \mid \boldsymbol{\Theta}\right), \boldsymbol{y}_{i}\right)+\lambda\|\boldsymbol{\Theta}\|_{F}^{2}</script><p>这里那个正则化与公式（1）不相同，他通过引入了对抗训练中的对抗样本对训练进行干扰，形成的对抗性正则化，目的是增加模型的鲁棒性。</p>
<p> 为了用我们提出的图AT和图增值税来训练GCN，我们将方程2和4中的项设置为方程7中的交叉熵损失，它们被最小化以分别更新GCN的参数</p>
<h2 id="总结："><a href="#总结：" class="headerlink" title="总结："></a>总结：</h2><p><strong>:100: GCN  与 GAT  有什么样的关系呢？</strong></p>
<p><strong>GAT在GCN的基础上，通过添加对抗训练构造对抗样本，提高模型的鲁棒性稳定性</strong></p>
<p><strong>在一些细节上，引入 快速梯度法， 交叉熵，KL散度</strong></p>
<h1 id="Softmax"><a href="#Softmax" class="headerlink" title="Softmax"></a>Softmax</h1><p> 作者在[2]是第一个定义训练神经概率语言模型使用Softmax交叉熵训练损失。 Softmax在计算上是缓慢的，快速的近似建议加快培训。 由作者在[4]引入的Softmax采样显示了时间复杂性和最先进的结果[3,12]的巨大改进。 采样Softmax避免计算 词汇中每个单词的ING分数，因为你选择一个提案分布，从中它是便宜的样本，并执行一个有偏见的重要性抽样近似的Softmax的梯度。 噪音还引入了对比估计[10]作为Softmax的<strong>无偏估计</strong>，并证明了它对学习单词嵌入[25]的有效性。 相反，[22,23]支柱的作者 一个负抽样损失，其目标不是近似Softmax，而是学习单词的高质量向量表示。 因此，他们训练一个分类器，可以区分 正对来自真实分布，假对来自负抽样分布。</p>
<p>什么是无偏估计？</p>
<p> 前面提到的负采样方案的引入，以及[22,23]提出的Word2Vec体系结构，使得在质量方面取得了最先进的结果 学习单词嵌入。 Word2Vec已成为一种广泛使用的体系结构，在文档分类[15]、用户建模[34]和图形嵌入[9,26]等应用中得到了应用。 最近 工作导致了单词嵌入模型[6,28]的进一步改进；一个值得注意的例子是快速文本模型[13]，它利用n-gram特征来提高单词嵌入质量。</p>
<p>正和未标记(P U)学习最初是在[19]中定义的。 研究表明，将PU学习应用于语言建模和推荐可以提高性能。 作者在[21]是第一个将PU学习框架应用于文本文档分类的人，并且在准确性上表现出显著的提升。 对于单词嵌入的训练，[31]定义的作者 一个启发式的所有未观察到的对，<strong>并鼓励模型尊重一个成对依赖的上限在其PMI估计</strong>，利用更大的信息。 在协同过滤领域吴，[20]的作者结合了一个<strong>用户暴露于项目的模型</strong>（incorporate a model of user exposure to items），使得每个未观察到的对被不同的对待。 有趣的是，在上一小节中引入了负抽样方案可以看作是将问题转移到PU学习案例的一种方法。 与传统的通用抽样损失(如Sampled Softmax或噪声对比估计)相反，我们主张<strong>负 抽样方案不应试图近似Softmax函数，而应作为一种方法来诱导对负模型的信息偏差</strong>。 为此，作者在[7]提供了一个负抽样的有价值的分析表明，<strong>具有较高内积分数的负样本（high inner product scores）具有上下文词提供了更多的信息梯度</strong>。 PU学习方法已经显示了一些 成功的背景下的推荐系统，如[20]所示。 此外，正如以前的几篇作品[5,24,37]强调的那样<strong>，语言建模是高度依赖上下文的，我们在本文中提倡 一种基于上下文的负抽样方案。</strong></p>
<p>1.3  一种基于主动学习的负抽样方案</p>
<p> 在主动学习的情况下，模型访问了一个小的标记数据集和一个更大的未标记数据池。 然后，目标是查询其中最有价值数据点的标签广泛的未标记集。 因此，使用抽样方法，可以用明智选择的点扩展训练集，以减少模型（[30]）或方差所造成的<strong>泛化误差</strong>数据集（[38]）。 在主动学习中，一个著名的研究领域是<strong>不确定性抽样</strong>（[11,32]）。 在此设置中，<strong>查询最不确定的实例以帮助模型细化决策 边界</strong>。 相反，在最大模型变化抽样中，一个是寻找具有最高范数梯度的样本点来提高性能（[1,14]）。 我们请感兴趣的读者[36]f 或者更详尽地比较主动学习方法。 在我们的例子中，我们永远无法访问采样点的真实标签，但我们认为理想的负采样应该是a 接近决策边界的采样数据点与采样非常不可能的数据之间的相对权衡。</p>
<p>1.负采样</p>
<p>自然语言处理领域中，判断两个单词是不是一对上下文词（context）与目标词（target），如果是一对，则是正样本，如果不是一对，则是负样本。</p>
<ol>
<li><p>泛化</p>
</li>
<li><p>泛化误差</p>
<p>学习方法的泛化能力（Generalization Error）是由该方法学习到的模型对未知数据的预测能力。</p>
<p>如果学得到的模型是$\hat{f}$</p>
<p>，那么用这个模型对未知数据预测的误差即为泛化误差</p>
<p>$R_{\exp }(\hat{f})=E_{P}[L(Y, \hat{f}(X))]=\int_{x \times y} L(y, \hat{f}(x)) P(x, y) d x d y$</p>
</li>
<li><p>不确定性抽样</p>
<p><a target="_blank" rel="noopener" href="https://blog.csdn.net/qq_39856931/article/details/106433187">https://blog.csdn.net/qq_39856931/article/details/106433187</a></p>
</li>
<li><p>主动学习</p>
</li>
</ol>
<p><strong>主动学习</strong>(Active Learning)为我们提供了这种可能。主动学习通过一定的算法查询<strong>最有用的</strong>未标记样本，并交由专家进行标记，然后用查询到的样本训练分类模型来提高模型的精确度。</p>
<p>因此，为了尽可能地减小训练集及标注成本，在机器学习领域中，提出主动学习（active learning）方法，优化分类模型。</p>
<p>最有用的样本是什么？</p>
<p>在各种主动学习方法中，查询函数的设计最常用的策略是：<strong>不确定性</strong>准则（uncertainty）和<strong>差异性</strong>准则（diversity）。</p>
<p>对于不确定性，我们可以借助信息熵的概念来进行理解。我们知道信息熵是衡量信息量的概念，也是衡量不确定性的概念。信息熵越大，就代表不确定性越大，包含的信息量也就越丰富。事实上，有些基于不确定性的主动学习查询函数就是使用了信息熵来设计的，比如熵值装袋查询（Entropy query-by-bagging）。所以，不确定性策略就是要想方设法地找出不确定性高的样本，因为这些样本所包含的丰富信息量，对我们训练模型来说就是有用的。</p>
<p>那么差异性怎么来理解呢？之前说到或查询函数每次迭代中查询一个或者<strong>一批</strong>样本。我们当然希望所查询的样本提供的信息是全面的，各个样本提供的信息不重复不冗余，即样本之间具有一定的差异性。在每轮迭代抽取单个信息量最大的样本加入训练集的情况下，每一轮迭代中模型都被重新训练，以新获得的知识去参与对样本不确定性的评估可以有效地避免数据冗余。但是如果每次迭代查询一批样本，那么就应该想办法来保证样本的差异性，避免数据冗余。</p>
<p>主动学习与半监督学习的区别：</p>
<p>主动学习，在利用未标注数据的时候，是从未标注数据中找到最容易判断错误的样例来交由专家进行标注，这个过程是一个筛选差数据的过程，也是一个互动交互的过程，引入了额外的专家的知识。<br>半监督学习，尤其是对于自学习模型，对于未标注数据而言，是选择最不容易判断错误的样例来加入到已标注数据中，这个过程，是一个自动的过程，是筛选最好的数据的过程，然后不需要互动，不需要人工干预，基于自身对于未标记数据加以利用，来提高学习模型的泛化性能</p>
<ol>
<li><a target="_blank" rel="noopener" href="https://www.zhihu.com/question/22983179">无偏估计与有偏估计</a></li>
</ol>
<p><a target="_blank" rel="noopener" href="https://www.matongxue.com/madocs/607.html">为什么样本方差（sample variance）的分母是 n-1？</a></p>
<p>采样，并估计女生身高：</p>
<script type="math/tex; mode=display">
\begin{array}{c}
\left\{x_{1}, x_{2}, \cdots, x_{n}\right\} \\
\bar{X}=\frac{x_{1}+x_{2}+\cdots+x_{n}}{n}
\end{array}</script><p>多次采样，平均值总会在一个 扰动：</p>
<p><img src="https://gitee.com/moluggg/image/raw/master/img/202008/09/212903-892092.jpeg" alt="img"></p>
<p><a target="_blank" rel="noopener" href="https://pic2.zhimg.com/50/v2-e3b97b0cde80871ce13909371341ab94_hd.jpg?source=1940ef5c">https://pic2.zhimg.com/50/v2-e3b97b0cde80871ce13909371341ab94_hd.jpg?source=1940ef5c</a></p>
<p>那么整体的方差是：</p>
<script type="math/tex; mode=display">
S^{2}=\frac{1}{n} \sum_{i=1}^{n}\left(X_{i}-\bar{X}\right)^{2}</script><h1 id="FGSM"><a href="#FGSM" class="headerlink" title="FGSM"></a>FGSM</h1><script type="math/tex; mode=display">
\left\{\begin{array}{c}
w^{T} \tilde{x}=w^{T} x+w^{T} \eta \\
\|\eta\|_{\infty}<\epsilon \\
\operatorname{dim}(w)=n \\
\text { average }(G(x))=m
\end{array}\right.</script><p>:100:对抗扰动通过ωTη影响激活函数从而影响分类结果。如果ω有n个维度，权向量的一个元素的平均大小是m，那么激活函数就会增加εmn。虽然‖η‖∞不会随着维度增加而增加，但是η会随n线性增长，然后就有高维问题了。</p>
<p>非线性模型的线性扰动<br>我们假设神经网络都太线性了以至于不能抵抗对抗样本。常见的LSTM、ReLU和maxout网络都趋向于线性表现，而类似sigmod这种非线性性模型也把大量的时间花在非饱和和线性系统中。（这里我也不怎么理解，望大神讲解）</p>
<p>我们从公式开始理解（fast gradient sign method）：<br>$η=εsign(▽xJ(θ,x,y))<br>$<br>模型参数：θ<br>模型输入，即图像：x<br>结果标签：y<br>损失函数：J(θ,x,y)<br>符号函数：sign() 就是激活函数<br>我们可以线性化代价函数的当前值θ,获得最优max-norm η<br>:100: 符号函数sign()是一个什么样的函数？</p>
<h1 id="kl-散度—-相对熵"><a href="#kl-散度—-相对熵" class="headerlink" title="kl 散度—-相对熵"></a>kl 散度—-相对熵</h1><p><a target="_blank" rel="noopener" href="https://blog.csdn.net/weixinhum/article/details/85064685">https://blog.csdn.net/weixinhum/article/details/85064685</a></p>
<p>在信息论中，相对熵等价于两个概率分布的信息熵的差值，若其中一个概率分布为真实分布，另一个为理论（拟合）分布，则此时相对熵等于交叉熵与真实分布的信息熵之差，表示使用理论分布拟合真实分布时产生<strong>的信息损耗</strong> </p>
<script type="math/tex; mode=display">
D_{K L}(p \| q)=\sum_{i=1}^{N}\left[p\left(x_{i}\right) \log p\left(x_{i}\right)-p\left(x_{i}\right) \log q\left(x_{i}\right)\right]</script><p>这里的p（x),q(X)分别表示真实时间的概率和理论拟合出来的概率</p>
<p>作用：</p>
<p>该公式得出来的解要么=0,要么大于0</p>
<p>很显然,p == q的时候，公式等于0</p>
<p>其他情况,公式大于0（证明在最后5）</p>
<p>但它有不好的地方，就是它是不对称的。举个例子，比如随机变量$X∼p$取值为1,2,3时的概率分别为[0.1,0.4,0.5]，随机变量Y∼Q取值为1,2,3时的概率分别为[0.4,0.2,0.4]，则：</p>
<script type="math/tex; mode=display">
\begin{array}{l}
D(P \| Q)=0.1 \times \log \left(\frac{0.1}{0.4}\right)+0.4 \times \log \left(\frac{0.4}{0.2}\right)+0.5 \times \log \left(\frac{0.5}{0.4}\right)=0.250 \\
D(Q \| P)=0.4 \times \log \left(\frac{0.4}{0.1}\right)+0.2 \times \log \left(\frac{0.2}{0.4}\right)+0.4 \times \log \left(\frac{0.4}{0.5}\right)=0.327
\end{array}</script><p>也就是用P来拟合Q和用Q来拟合P的相对熵居然不一样，而他们的距离是一样的。这也就是说，<strong>相对熵的大小并不跟距离有一一对应的关系</strong>。这点蛮头疼的，因为一般我们希望距离越远下降越快，而相对熵取哪个为参考在同等距离情况下下降的速度都不一样，这就非常尴尬了。</p>
<p>5证明步骤：</p>
<p><img src="https://gitee.com/moluggg/image/raw/master/img/202008/09/212906-443654.png" alt="image-20200724124817276"></p>
<h1 id="NGCF"><a href="#NGCF" class="headerlink" title="NGCF"></a>NGCF</h1><p>快速理解：</p>
<p><a target="_blank" rel="noopener" href="https://blog.csdn.net/weixin_45606655/article/details/105639426">https://blog.csdn.net/weixin_45606655/article/details/105639426</a></p>
<h2 id="1-背景"><a href="#1-背景" class="headerlink" title="1.背景"></a>1.背景</h2><p>​    ==<strong>对user和item的向量表示（如embedding）是现代推荐系统的核心</strong>== 从早期的矩阵分解到最近出现的基于我的深度学习这些，现有的努力通常通过从描述用户（或项目）的预先存在的特征(如ID和属性)映射来获得用户（或项目）的嵌入。 我们认为这是个继承者 这种方法的缺点是，<strong>user-item中潜在的交互collaborative signal没有嵌入</strong>。 因此，结果嵌入可能不足够捕捉协同<strong>过滤效应</strong>。 </p>
<p>:100: 什么是二部图？</p>
<p>​    在本工作中，我们建议将用户项交互(-更具体地说是-)二部图结构-集成到嵌入过程中。 我们知道 开发了一种新的推荐框架神经图协同过滤(NGCF)，它<strong>通过传播嵌入来利用用户项图结构</strong>。 这导致了表现性的建模 用户项图中的==高阶连通性==，<strong>有效地将协作信号以显式的方式注入嵌入过程</strong>。 我们对三个公共基准进行了广泛的实验展示了对几种最先进的模型的显著改进，如HOPRec[40]和协作内存网络[5]。 进一步分析验证了嵌入传播f的重要性或者学习更好的用户和项目表示，证明NGCF的合理性和有效性。 守则可在<a target="_blank" rel="noopener" href="https://github.com/xiangwang1223/neural_graph_collaborative_filtering.查阅">https://github.com/xiangwang1223/neural_graph_collaborative_filtering.查阅</a></p>
<p>​     个性化推荐无处不在，已经应用于电子商务、广告和社交媒体等许多在线服务。 <strong>其核心是评估基于用户的历史和互动预测用户是否会选中物品</strong>，用户的历史和互动如购买和点击等。 协作过滤CF的解决措施是： 通过假设行为相似的用户在项目上表现出相似的偏好来解决它。为了实现这个假设，通常通过 ==参数化== user和item来重建历史交互，并且基于参数去预测用户的偏好</p>
<p>一般来说 在可学习的CF模型中有两个关键因素：</p>
<p>1)嵌入，将用户和项目转换为embedding表示</p>
<p>2)交互建模，重建基于embedding的历史interactions 问题。  </p>
<blockquote>
<p>MF用内积直接嵌入；collaborative deep learning从item的边信息中整合深度学习到的representations（embedding function ）；neural collaborative filtering 用非线性神经网络（interaction function）；translation-basedCF用Euclidean distance metric（interaction function）。</p>
</blockquote>
<pre><code> 尽管它们是有效的，但我们认为这些方法不足以为CF产生令人满意的嵌入。 关键原因是embedding function 缺乏对**collaborative signal**的 ==显式的编码，== 这种signal是在user-item之间潜在的交互，它可以反映users（or items）间的行为相似度，大部分现存方法建立embedding function仅仅使用表面特征(例如ID和属性)而不考虑user-item间的交互，所以是低效的。

 虽然直观地将用户项交互集成到嵌入函数中很有用，但要做好它是不平凡的。 特别是，相互作用的规模很容易达到数百万甚至上千万，因此在实际应用中，很难提取所需的协作信号。 在本工作中，我们通过利用用户项交互的高阶连接（ **high-order connectivity** ）来解决这个挑战， 在交互图结构中编码协作信号的一种自然方法。
</code></pre><p><img src="https://gitee.com/moluggg/image/raw/master/img/202008/09/212909-637205.png" alt="image-20200806101900959"></p>
<p>运行示例。图 1 展示了一个 user-item 的二部图及 u1 的高阶连接性。u1 的高阶连接性表示 u1 通过长度大于 1 的路径连接到的节点。例如，u1 通过长度 l=2 的路径连接到 u2 和 u3，这代表 u1 的 2 阶连接性；u1 通过长度 l=3 的路径连接到 i4，i5，这代表 u1 的 3 阶连接性。需要注意的是，虽然 i4 和 i5 都是 u1 的 3 阶邻居，但是 i4 可以通过更多的路径连接到 u1，所以 i4 与 u1 的相似度更高。</p>
<p>目前的工作。作者设计了一个<strong>嵌入传播层</strong>（<strong>embedding propagation</strong>），它通过聚合交互项目（或用户)的嵌入来细化用户(或项目)的嵌入）。 比 堆叠多个嵌入传播层，我们可以强制嵌入，以捕获协作信号的高阶连接性。 以图1为例，堆叠两层帽 根据U1←I2←U2的行为相似性，叠加三层捕获了U1←I2←U2和I4的潜在，以及信息流的强度(由TRA估计 层之间的可变权重)确定I4和I5的推荐优先级</p>
<p>最后，值得一提的是，虽然在最近的一种名为HOP-Rec[40]的方法中考虑了高阶连通性信息，但它只是用来丰富训练数据。 具体来说，HOPRec的预测模型仍然是MF，而它是通过优化具有高阶连接性的损失来训练的。 与HOP-Rec不同的是，我们贡献了一个新的TEC 将高阶连接性集成到预测模型中，这在经验上比CF的HOP-Rec产生了更好的嵌入</p>
<p> 总之，本工作做出了以下主要贡献：</p>
<p>（1） 在基于模型的CF方法的嵌入函数中，我们强调了显式利用协同信号的重要性。</p>
<p>（2） 作者提出了一种新的基于图神经网络的推荐框架NGCF，它通过执行嵌入，以高阶连接的形式显式地编码协作信号传播。</p>
<p>（3） 我们对300万个数据集进行实证研究。 广泛的结果证明了NGCF的最新性能及其在改进嵌入中的有效性 与神经嵌入传播的相关性。</p>
<h2 id="2-METHODOLOGY"><a href="#2-METHODOLOGY" class="headerlink" title="2 METHODOLOGY"></a><strong>2 METHODOLOGY</strong></h2><p> 我们现在提出了所提出的NGCF模型，其体系结构如图2所示。 框架中有三个组件：</p>
<p>（1）提供和初始化使用的嵌入层用户 嵌入和项嵌入；</p>
<p>（2）通过注入高阶连通性关系来细化嵌入的多个嵌入传播层；</p>
<p>（3）从不同的传播层聚合细化的嵌入并输出用户项对的亲和力分数的预测层。 最后，我们讨论了NGCF的时间复杂度以及与现有方法的联系。</p>
<p>概括来说：</p>
<p>NGCF模型主要包含三个部分：<br>（1）Embedding Layer：将 user 和 item 的 ID 映射为向量初始化表示；<br>（2）Embedding Propagation Layers：联合高阶连通性来更新embedding<br>（3）Prediction：聚合来自传播层（Embedding Propagation Layers）的更新embedding，输出预测结果</p>
<p><img src="https://gitee.com/moluggg/image/raw/master/img/202008/09/212911-758625.png" alt="image-20200806112909865"></p>
<h3 id="2-1-Embedding-Layer"><a href="#2-1-Embedding-Layer" class="headerlink" title="2.1 Embedding Layer"></a><strong>2.1 Embedding Layer</strong></h3><p>在[1,14,26]的主流推荐模型之后，我们描述了一个带有嵌入向量Eu∈RD(EI∈RD)的用户u(一个项目I)，其中d表示嵌入大小。 这可以看作是建立一个参数矩阵作为嵌入查找表：</p>
<script type="math/tex; mode=display">
\mathbf{E}=[\underbrace{\mathbf{e}_{u_{1}}, \cdots, \mathbf{e}_{u_{N}}}_{\text {users embeddings }}, \underbrace{\mathbf{e}_{i_{1}}, \cdots, \mathbf{e}_{i_{M}}}_{\text {item embeddings }}]</script><p>值得注意的是，<strong>这个嵌入表作为用户嵌入和项嵌入的初始状态，以 ==端到端的方式== 进行优化。</strong> 在传统的推荐模式，如MFAN 神经协作过滤[14]，将这些ID嵌入直接输入到交互层（或算子）中，以获得预测分数。 相反， ==在我们的NGCF框架中，我们细化了通过在user-item交互图上传播它们来进行embedings。==   这导致了更有效的推荐嵌入，因为嵌入细化步骤显式地将协作信号注入嵌入。</p>
<h3 id="2-2-Embedding-Propagation-Layers"><a href="#2-2-Embedding-Propagation-Layers" class="headerlink" title="2.2 Embedding Propagation Layers"></a><strong>2.2 Embedding Propagation Layers</strong></h3><p>接下来，我们构建了GNN的消息传递体系结构以便沿着图结构捕获CF信号并细化用户和项的嵌入。 我们首先说明设计 一层传，然后将其推广到多个连续层。</p>
<h4 id="2-2-1-First-order-Propagation"><a href="#2-2-1-First-order-Propagation" class="headerlink" title="2.2.1  First-order Propagation"></a>2.2.1  First-order Propagation</h4><p>直观上，与用户交互过的项目可以体现用户的偏好，类似的，与item 交互过的用户也可以看作是item的特性，并且可以用于度量两个项目之间的协作相似性,为此气门需要将 user-item 联系起来</p>
<p>那么定义一个 user-item 对 ，定义<code>从 i 到 u 的信息嵌入</code> mu←i为：</p>
<script type="math/tex; mode=display">
\mathbf{m}_{u \leftarrow i}=\frac{1}{\sqrt{\left|\mathcal{N}_{u}\right|\left|\mathcal{N}_{i}\right|}}\left(\mathbf{W}_{1} \mathbf{e}_{i}+\mathbf{W}_{2}\left(\mathbf{e}_{i} \odot \mathbf{e}_{u}\right)\right)</script><p>可以概括表示成：</p>
<script type="math/tex; mode=display">
\mathbf{m}_{u \leftarrow i}=f\left(\mathbf{e}_{i}, \mathbf{e}_{u}, p_{u i}\right)</script><p>这样就可以 在此基础上在连接的user 与 item 之间执行<strong>嵌入传播</strong>。</p>
<p>公式说明：</p>
<p>① $m_{u←i}$是消息embedding，f(⋅)是消息编码函数，ei和eu作为输入，利用系数pui控制边(u,i)上每次传播的衰减因子。</p>
<p>②  $p_{ui}=\frac{1}{\sqrt{\left|\mathcal{N}_{u}\right|\left|\mathcal{N}_{i}\right|}}$  表示的是衰减因子，也是正则化系数，表示历史item对用户偏好的贡献程度，从消息传递的观点看，$p_{ui}$被看成是一个折扣因子，表示消息在传播过程中的衰退。</p>
<p><em>③ W</em>1,<em>W</em>2是d′∗d维的权值矩阵，去提取有用信息进行传播。</p>
<p>④ 公式特色： 传统的图神经网络只是考虑 ei 的作用，本文中我们通过ei⊙eu把ei和eu之间的交互编码到传递的信息中，这使得消息依赖于ei和eu之间的关联性，传递更多来自相似items的消息。</p>
<p>上述说明了单层传播的设计，现在将其推广到多个连续层</p>
<h4 id="2-2-2-High-order-Propagation"><a href="#2-2-2-High-order-Propagation" class="headerlink" title="2.2.2  High-order Propagation"></a><em>2.2.2</em>  <strong>High-order Propagation</strong></h4><p>这样就可以聚合从u的邻居传来的信息去更新u的表示，聚合函数为：</p>
<script type="math/tex; mode=display">
\mathbf{e}_{u}^{(1)}=\text { LeakyReLU }\left(\mathbf{m}_{u \leftarrow u}+\sum_{i \in \mathcal{N}_{u}} \mathbf{m}_{u \leftarrow i}\right)</script><p>上述公式是一阶嵌入传播层，除了从邻居 Nu 传播的消息外，还考虑了 u 的自连接:mu←u = W1eu，保留了原始特征的信息。同理$ e_{i}^{(1)}$ </p>
<p>综合上述（12）~（14）：</p>
<script type="math/tex; mode=display">
\mathbf{e}_{u}^{(l)}=\text { LeakyReLU }\left(\mathbf{m}_{u \leftarrow u}^{(l)}+\sum_{i \in \mathcal{N}_{u}} \mathbf{m}_{u \leftarrow i}^{(l)}\right)\left\{\begin{array}{l}
\mathbf{m}_{u \leftarrow i}^{(l)}=p_{u i}\left(\mathbf{W}_{1}^{(l)} \mathbf{e}_{i}^{(l-1)}+\mathbf{W}_{2}^{(l)}\left(\mathbf{e}_{i}^{(l-1)} \odot \mathbf{e}_{u}^{(l-1)}\right)\right) \\
(l) \\
\mathbf{m}_{u \leftarrow u}=\mathbf{W}_{1}^{(l)} \mathbf{e}_{u}^{(l-1)}
\end{array}\right.</script><p>同理，$e_{i}^{(l)}$ 也有类似的表示。</p>
<p>公式说明：</p>
<p>① 与2.2.1的公式相似 ，理解与2.2.1基本一样</p>
<p>② 可以通过以下一个例子进行理解</p>
<p>1.一阶连接性可以使得表示进一步准确，可以通过堆叠嵌入传播层去扩展高阶连接性信息，<strong>高阶连接性对于编码协同信号去估计用户和商品间的关联性来说是很重要的。</strong><br>2.通过堆叠l个嵌入传播层一个用户能够收到它的l跳邻居传来的消息，如图所示，在第l步，用户u的递归表示为</p>
<p><img src="https://gitee.com/moluggg/image/raw/master/img/202008/09/212915-721543.png" alt="image-20200807111428284"></p>
<p>如图三所示，协同信号例如u1←i2←u2←i4可以被嵌入传播过程捕捉，来自i4的消息被显式的编码在$e_{u1}^{(3)}$中</p>
<p><img src="https://gitee.com/moluggg/image/raw/master/img/202008/09/212918-303547.png" alt="Alt"></p>
<p>为了提供嵌入传播的整体视图，方便批量实现，提供了分层传播规则的矩阵形式:</p>
<script type="math/tex; mode=display">
\mathbf{E}^{(l)}=\operatorname{LeakyReLU}\left((\mathcal{L}+\mathbf{I}) \mathbf{E}^{(l-1)} \mathbf{W}_{1}^{(l)}+\mathcal{L} \mathbf{E}^{(l-1)} \odot \mathbf{E}^{(l-1)} \mathbf{W}_{2}^{(l)}\right)</script><p>公式：</p>
<p>①E 是用户和项经过 l 步嵌入传播后得到的表示<br>②I 表示一个单位矩阵<br>③ L 表示用户-项目图的拉普拉斯矩阵:</p>
<script type="math/tex; mode=display">
\mathcal{L}=\mathbf{D}^{-\frac{1}{2}} \mathbf{A D}^{-\frac{1}{2}} \text { and } \mathbf{A}=\left[\begin{array}{cc}
\mathbf{0} & \mathbf{R} \\
\mathbf{R}^{\top} & \mathbf{0}
\end{array}\right]</script><h3 id="2-3-Model-Prediction"><a href="#2-3-Model-Prediction" class="headerlink" title="2.3  Model Prediction"></a>2.3  Model Prediction</h3><p>由于在不同层中获得的表示强调通过不同连接传递的消息，所以它们在反映用户偏好方面有不同的贡献。<br>因此，将它们串联起来，构成用户的最终嵌入；对 item 也做同样的操作。<br><img src="https://gitee.com/moluggg/image/raw/master/img/202008/09/212923-168143.png" alt="在这里插入图片描述"><br>其中||为串联操作。除了连接，其他聚合器也可以应用，如加权平均、最大池、LSTM。使用串联在于它的简单性，不需要学习额外的参数，而且已经被非常有效地证明了。<br>最后，我们进行内积来估计用户对目标物品的偏好:<br><img src="https://gitee.com/moluggg/image/raw/master/img/202008/09/212921-567971.png" alt="在这里插入图片描述"></p>
<h3 id="2-4-Optimization"><a href="#2-4-Optimization" class="headerlink" title="2.4 Optimization"></a>2.4 Optimization</h3><p><strong>optimize the pairwise BPR loss</strong><br>它考虑观察到的和未观察到的用户-项目交互之间的相对顺序。具体地说，BPR 假设用户引用的已观察到的交互作用应该比未观察到的交互作用具有更高的预测值。目标函数如下：<br><img src="https://gitee.com/moluggg/image/raw/master/img/202008/09/212920-583792.png" alt="在这里插入图片描述"></p>

      
       <hr><span style="font-style: italic;color: gray;"> 转载请注明来源，欢迎对文章中的引用来源进行考证，欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论，也可以邮件至 2572876783@qq.com </span>
    </div>
</article>


<p>
    <a  class="dashang" onclick="dashangToggle()">💰</a>
</p>






    
        <!-- MathJax配置，可通过单美元符号书写行内公式等 -->
<script type="text/x-mathjax-config">
    MathJax.Hub.Config({
    "HTML-CSS": {
        preferredFont: "TeX",
        availableFonts: ["STIX","TeX"],
        linebreaks: { automatic:true },
        EqnChunk: (MathJax.Hub.Browser.isMobile ? 10 : 50)
    },
    tex2jax: {
        inlineMath: [ ["$", "$"], ["\\(","\\)"] ],
        processEscapes: true,
        ignoreClass: "tex2jax_ignore|dno",
        skipTags: ['script', 'noscript', 'style', 'textarea', 'pre', 'code']
    },
    TeX: {
        equationNumbers: { autoNumber: "AMS" },
        noUndefined: { attributes: { mathcolor: "red", mathbackground: "#FFEEEE", mathsize: "90%" } },
        Macros: { href: "{}" }
    },
    messageStyle: "none"
    });
</script>
<!-- 给MathJax元素添加has-jax class -->
<script type="text/x-mathjax-config">
    MathJax.Hub.Queue(function() {
        var all = MathJax.Hub.getAllJax(), i;
        for(i=0; i < all.length; i += 1) {
            all[i].SourceElement().parentNode.className += ' has-jax';
        }
    });
</script>
<!-- 通过连接CDN加载MathJax的js代码 -->
<script type="text/javascript" async
        src="//cdn.jsdelivr.net/npm/mathjax@2.7.8/unpacked/MathJax.js?config=TeX-MML-AM_CHTML">
</script>
<input type="hidden" id="MathJax-js"
        value="//cdn.jsdelivr.net/npm/mathjax@2.7.8/unpacked/MathJax.js?config=TeX-MML-AM_CHTML">
</input>
    




    </div>
    <div class="copyright">
        <p class="footer-entry">
    ©2016-2020 MOLU
</p>
<p class="footer-entry">Built with <a href="https://hexo.io/" target="_blank">Hexo</a> and <a href="https://github.com/yelog/hexo-theme-3-hexo" target="_blank">3-hexo</a> theme</p>

    </div>
    <div class="full-toc">
        <button class="full" data-title="切换全屏 快捷键 s"><span class="min "></span></button>
<a class="" id="rocket" ></a>

    </div>
</div>

<div class="hide_box" onclick="dashangToggle()"></div>
<div class="shang_box">
    <a class="shang_close"  onclick="dashangToggle()">×</a>
    <div class="shang_tit">
        <p>Help us with donation</p>
    </div>
    <div class="shang_payimg">
        <div class="pay_img">
            <img src="/img/alipay.jpg" class="alipay" title="扫码支持">
            <img src="/img/weixin.jpg" class="weixin" title="扫码支持">
        </div>
    </div>
    <div class="shang_payselect">
        <span><label><input type="radio" name="pay" checked value="alipay">alipay</label></span><span><label><input type="radio" name="pay" value="weixin">weixin</label></span>
    </div>
</div>


</body>
<script src="/js/jquery.pjax.js?v=1.1.0" ></script>

<script src="/js/script.js?v=1.1.0" ></script>
<script>
    var img_resize = 'default';
    function initArticle() {
        /*渲染对应的表格样式*/
        
            $("#post .pjax table").addClass("green_title");
        

        /*渲染打赏样式*/
        
        $("input[name=pay]").on("click", function () {
            if($("input[name=pay]:checked").val()=="weixin"){
                $(".shang_box .shang_payimg .pay_img").addClass("weixin_img");
            } else {
                $(".shang_box .shang_payimg .pay_img").removeClass("weixin_img");
            }
        })
        

        /*高亮代码块行号*/
        

        /*访问数量*/
        
        $.getScript("//busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js");
        

        /*代码高亮，行号对齐*/
        $('.pre-numbering').css('line-height',$('.has-numbering').css('line-height'));

        
        
    }

    /*打赏页面隐藏与展示*/
    
    function dashangToggle() {
        $(".shang_box").fadeToggle();
        $(".hide_box").fadeToggle();
    }
    

</script>

<!--加入行号的高亮代码块样式-->

<!--自定义样式设置-->
<style>
    
    
    .nav {
        width: 542px;
    }
    .nav.fullscreen {
        margin-left: -542px;
    }
    .nav-left {
        width: 120px;
    }
    
    
    @media screen and (max-width: 1468px) {
        .nav {
            width: 492px;
        }
        .nav.fullscreen {
            margin-left: -492px;
        }
        .nav-left {
            width: 100px;
        }
    }
    
    
    @media screen and (max-width: 1024px) {
        .nav {
            width: 492px;
            margin-left: -492px
        }
        .nav.fullscreen {
            margin-left: 0;
        }
    }
    
    @media screen and (max-width: 426px) {
        .nav {
            width: 100%;
        }
        .nav-left {
            width: 100%;
        }
    }
    
    
    .nav-right .title-list nav a .post-title, .nav-right .title-list #local-search-result a .post-title {
        color: #383636;
    }
    
    
    .nav-right .title-list nav a .post-date, .nav-right .title-list #local-search-result a .post-date {
        color: #5e5e5f;
    }
    
    
    .nav-right nav a.hover, #local-search-result a.hover{
        background-color: #e2e0e0;
    }
    
    

    /*列表样式*/
    

    /* 背景图样式 */
    
    


    /*引用块样式*/
    

    /*文章列表背景图*/
    

    
</style>







</html>
